package com.eclipse.e20200205_集合.ArrayList;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class 并发修改异常 {
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void main(String[] args) {
		List list = new  ArrayList();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		
		
		// java.util.ConcurrentModificationException
		// 并发修改异常
		// 在迭代集合的过程当中，是不允许直接修改集合结构
		// 删除时可以使用迭代当中的删除，去删除元素
		// 遍历集合，如果元素等于2 把2给删除
		
		// 在获取迭代器modCount = expectedModCount
		
		// modCount:集合修改次数
		// expectedModCount迭代当中记录集合修改的次数
		// 只要修改的次数不相等
		// modCount != expectedModCount
		// throw new ConcurrentModificationException();
		
		//1.遍历集合
		Iterator it = list.iterator();
		while(it.hasNext()) {
			//2.取出对应的元素
			String str = (String)it.next();
			//3.判断该 元素是否等于 2
			if(str.equals("2")) {
				//4.等于 2 就把2给集合当中删除
				//list.remove("2");
				//it.remove(); //删除当前正在迭代集合的元素（正在遍历元素 next）
				             //expectedModCount = modCount;
				//list.add("myxq");
			}
		}
		System.out.println(list);
	}
}
